<?php

/**
 * Created by PhpStorm.
 * User: YUWENXUAN
 * Date: 2017/4/10
 * Time: 16:37
 */
require __DIR__ . '/FileDir_class.php';
class Filec extends FileDir
{
    /**
     * Filec constructor.
     * @param $filename
     */
    function __construct($filename)
    {
        if (!file_exists($filename)) {   // 如果文件不存在，则用touch()函数创建该文件
            touch($filename) or die("文件创建失败");
        }
        $this->name = $filename;
        $this->type = \CURLFile::getMIMEType(pathinfo($filename));
        $this->size = $this->toSize(filename($filename));
        parent::__construct($filename);  //调用父类构造方法为其他成员属性赋初始值
    }

    public function delFile()
    {
        // TODO: Implement delFile() method.
        if (unlink($this->name)) {
            return true;
        } else {
            return false;
        }
    }

    public function copyFile($dFile)
    {
        // TODO: Implement copyFile() method.
        if (copy($this->name, $dFile)) {
            return true;
        } else {
            return false;
        }
    }

    public function download()
    {
        //发送头文件设置MIME类型
        header("Content-Type:".$this->type);
        //发送描述
        header("Content-Disposition:attachment;filename=''".$this->basename."");
        //文件大小的头信息
        header("Content-Length".filesize($this->name));
        // 将文件内容读出并发送给客户端
        readfile($this->name);

    }

    public function getText()
    {


//        flock(file,lock,block)
        /*
         * lock 参数可以是以下值之一：
            要取得共享锁定（读取的程序），将 lock 设为 LOCK_SH（PHP 4.0.1 以前的版本设置为 1）。
            要取得独占锁定（写入的程序），将 lock 设为 LOCK_EX（PHP 4.0.1 以前的版本中设置为 2）。
            要释放锁定（无论共享或独占），将 lock 设为 LOCK_UN（PHP 4.0.1 以前的版本中设置为 3）。
            如果不希望 flock() 在锁定时堵塞，则给 lock 加上 LOCK_NB（PHP 4.0.1 以前的版本中设置为 4）。
        */


        $fp = fopen($this->name, 'r');
        flock($fp, LOCK_SH); //获取文件的共享锁定
        $buffer = "";
        while (!feof($fp)) {  //如果没有文件结尾，就一直循环读取文件
            $buffer = fread($fp, 1024);   //每次从文件中读取1024追加到缓冲区
        }
        flock($fp, LOCK_UN);  //获取文件的释放锁定
        fclose($fp);  // 关闭文件指针
        return $buffer; // 返回文件的全部内容文本
    }

}

$obj = new Filec('cccc');
echo $obj;